﻿using System;
using Ast.Framework.Events;

namespace Ast.Core.Events
{
    public interface IKernelReloadEvents : IEventHandler
    {
        void OnRealoding();
        void OnReloaded(IntPtr curKernelBase, IntPtr newKernelBase);
        void OnUnloading(IntPtr kernelBase);
        void OnUnloaded();
    }

    public abstract class KernelReloadEvents : IKernelReloadEvents
    {
        public virtual void OnRealoding()
        {
        }

        public virtual void OnReloaded(IntPtr curKernelBase, IntPtr newKernelBase)
        {
        }

        public virtual void OnUnloading(IntPtr kernelBase)
        {
        }

        public virtual void OnUnloaded()
        {
        }
    }
}